home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / dev / e / 2b_CrtvE_src.lha / internal3.s < prev    next >
Text File  |  2001-01-29  |  4KB  |  197 lines

  1. ;; Internals
  2. ;; KillExe
  3. KILLEXE:
  4.     TST.W   KILLFLAG
  5.     BEQ.S   .1
  6.     MOVE.L  DOSBASE(PC),A6
  7.     MOVE.L  #NAMEBUF,D1
  8.     TSTMOD
  9.     BEQ.S   .2
  10.     MOVE.L  D1,A0
  11. .3: TST.B   (A0)+
  12.     BNE.S   .3
  13.     MOVE.B  #".",-1(A0)
  14.     MOVE.B  #"m",(A0)
  15.     CLR.B   1(A0)
  16. .2: JSR -72(A6)
  17. .1: RTS
  18. ;*-*
  19. ;; CleanUp All
  20. CLEANUPALL:
  21.     move.l  DOSBASE,a6
  22.     move.l  DOS_RDA,d1
  23.     beq.S   .SKP
  24.     JSR -$35A(A6)
  25. .SKP:
  26.     BSR CLOSECON
  27.     BSR CLOSELOCK
  28.     JSR FREEBUFFERS
  29.     BSR SETOLDHANDLER
  30.     BSR UNLOCKCACHE
  31.     MOVE.L  DOSBASE,A1
  32.     MOVE.L  4,A6
  33.     JSR -414(A6)
  34.     MOVE.L  UTILBASE,A1
  35.     JSR -414(A6)
  36.     TST.L   MATHBASE
  37.     BEQ.S   .1
  38.     MOVE.L  MATHBASE(PC),A1
  39.     JSR -414(A6)
  40. .1: RTS
  41. ;*-*
  42. ;; OpenCon
  43. OPENCON:
  44.     MOVE.L  #CONNAME,D1
  45.     MOVE.L  #1006,D2
  46.     MOVE.L  DOSBASE(PC),A6
  47.     JSR -30(A6)
  48.     MOVE.L  D0,STOUT
  49.     BEQ LEAVEFAST       ; NO CON: --> DEEP TROUBLE
  50.     RTS
  51. ;*-*
  52. ;; HoldCon
  53. HOLDCON:
  54.     MOVEM.L D0-D7/A0-A6,-(A7)
  55.     BTST    #2,CODEPREFS+1
  56.     BEQ.S   .2
  57.     BSR READCON         ; MUST BE READABLE
  58. .2: MOVEM.L (A7)+,D0-D7/A0-A6
  59.     RTS
  60. ;*-*
  61. ;; CloseCon
  62. CLOSECON:
  63.     BSR HOLDCON
  64.     TST.W   CONOUT
  65.     BEQ.S   .1          ; NO CON: SO DON'T CLOSE IT
  66.     MOVE.L  STOUT(PC),D1
  67.     MOVE.L  DOSBASE(PC),A6
  68.     JSR -36(A6)
  69. .1: RTS
  70. ;*-*
  71. ;; ReadCon
  72. READCON:
  73.     MOVE.L  WORK(PC),D2
  74.     MOVE.L  #10,D3
  75. READSTRING:           ; D2=ADR, D3=LEN
  76.     MOVE.L  STOUT(PC),D1
  77.     MOVE.L  DOSBASE(PC),A6
  78.     JSR -42(A6)
  79.     RTS
  80. ;*-*
  81.  
  82. ;; FixRetValue
  83. FIXRETVALUE:
  84.     MOVEQ   #0,D0
  85.     MOVE.W  RETERROR(PC),D1
  86.     BMI.S   .1
  87.     MOVEQ   #5,D0
  88.     BTST    #3,CODEPREFS+2
  89.     BEQ.S   .2
  90.     MOVE.L  D1,D0
  91.     EXT.L   D0
  92.     ADDQ.L  #1,D0
  93.     BRA.S   .1
  94. .2: BTST    #5,CODEPREFS+3
  95.     BEQ.S   .1
  96.     MOVE.L  BYTEOFF(PC),D0
  97. .1: RTS
  98. ;*-*
  99. ;; LeaveError
  100. LEAVEERROR:
  101.     BSR ERROR
  102.     BSR KILLEXE
  103. LEAVEOTHERERROR:
  104.     BSR CLEANUPALL
  105. LEAVEFAST:
  106.     MOVE.L  INITSTACK(PC),A7
  107.     BSR.S   FIXRETVALUE
  108.     RTS
  109. ;*-*
  110. ;; InstallHandler
  111. INSTALLHANDLER:
  112.     ;rts
  113.     ;TST.W  CONOUT          ; DON'T INSTALL IF IN ASMONE
  114.     ;BNE.S  .1
  115.     MOVE.L  4.W,A6
  116.     MOVE.L  276(A6),A0
  117.     MOVE.L  50(A0),OLDTRAP
  118.     MOVE.L  #TRAPHANDLER,50(A0)
  119.     ;DIVU   #0,D0
  120. .1: RTS
  121. ;*-*
  122. ;; SetOldHandler
  123. SETOLDHANDLER:
  124.     MOVE.L  4.W,A6
  125.     MOVE.L  276(A6),A0
  126.     MOVE.L  OLDTRAP,D0
  127.     BEQ.S   .1
  128.     MOVE.L  D0,50(A0)
  129. .1: RTS
  130. ;*-*
  131. ;; TrapHandler
  132. TRAPHANDLER:
  133.     MOVE.L  (A7)+,D0
  134.     MOVE.W  D0,GURUNUM
  135.     MOVEQ   #3,D1
  136.     CMP.L   D1,D0           ; BUS/ADR ER?
  137.     BGT.S   .2
  138.     MOVE.L  4.W,A6
  139.     BTST    #0,297(A6)      ; 68010+ ?
  140.     BNE.S   .2
  141.     ADDQ.L  #8,A7
  142. .2: MOVE.L  2(A7),CRASHPC
  143.     MOVE.L  #.3,2(A7)
  144.     RTE
  145. .3: MOVE.W  GURUNUM(PC),D0
  146.     MOVEQ   #31,D1
  147.     BCLR    D1,D0
  148.     CMP.L   #50,D0
  149.     BMI.S   .1
  150.     MOVEQ   #1,D0
  151. .1: MOVE.W  D0,GURUNUM
  152.     MOVE.L  CRASHPC(PC),D0
  153.     SUB.L   #S,D0
  154.     BMI.S   .4
  155.     CMP.L   #100000,D0      ; MAX EXE SIZE EC
  156.     BMI.S   .5
  157. .4: MOVEQ   #0,D0
  158. .5: MOVE.L  D0,CRASHPC
  159.     JSR CHECKCOOKIES
  160. DAMAGEDCOOKIES:           ; ENTRY FOR OWN-GEN ERRORS
  161.     MOVE.W  LINENUM(PC),LINENUMC
  162.     LEA INTERNALMESSY(PC),A0
  163.     LEA CURSPOT(PC),A1
  164.     TST.W   IEEEPROBLEM
  165.     BNE.S   IEEEWARN
  166.     BSR WRITEFORMAT
  167.     BRA LEAVEOTHERERROR
  168. IEEEWARN:
  169.     MOVE.L  #IEEEMESSY,D2
  170.     MOVEQ   #IEEEEND-IEEEMESSY,D3
  171.     BSR WRITECON
  172.     BRA LEAVEOTHERERROR
  173. ;*-*
  174.  
  175.  
  176. CONNAME:
  177.     DC.B    'CON:40/40/560/80/Amiga E Compiler Output',0
  178.     EVEN
  179.  
  180. OLDTRAP:  DC.L    0
  181.  
  182. CURSPOT:  DC.W    0
  183. GURUNUM:  DC.W    0
  184. LINENUMC: DC.W    0
  185. BUFSPOT:  DC.W    0
  186. CRASHPC:  DC.L    0
  187.  
  188.  
  189. INTERNALMESSY:    DC.B    "EC INTERNAL ERROR [%d,%d,%d,%d,$%lx] (please report!)",10,0
  190.     EVEN
  191. IEEEMESSY:    DC.B    "PROBLEM: your `mathieeesingbas.library' is"
  192.             DC.B    " not properly patched (see docs)",10
  193. IEEEEND:      EVEN
  194.  
  195. ;*-*
  196.  
  197.